Skip to content

Verbatim String Fixes#1776

Merged
kevin-montrose merged 4 commits intomainfrom
users/kmontrose/verbatimStringFix
May 8, 2026
Merged

Verbatim String Fixes#1776
kevin-montrose merged 4 commits intomainfrom
users/kmontrose/verbatimStringFix

Conversation

@kevin-montrose
Copy link
Copy Markdown
Contributor

@kevin-montrose kevin-montrose commented May 6, 2026

Noticed in in INFO but generally possible in other cases, we don't always handle response that would fill the send buffer correctly.

This fixes all the verbatim string cases (since those are easy to identify) a more general fix is probably necessary.

TODO:

… more general fix is needed throughout, but this should fix INFO with large numbers of clients or nodes
@kevin-montrose kevin-montrose marked this pull request as ready for review May 6, 2026 22:01
Copilot AI review requested due to automatic review settings May 6, 2026 22:01
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a safer verbatim-string write path to avoid send-buffer edge cases (noted in INFO) and expands tests to cover both RESP2 and RESP3 behaviors.

Changes:

  • Parameterize INFO-related tests to run under both RESP2 and RESP3.
  • Replace verbatim string writes with a new “large” verbatim writer that flushes safely around buffer boundaries.
  • Simplify empty INFO response writes to use WriteDirect.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 8 comments.

File Description
test/Garnet.test/RespInfoTests.cs Expands INFO tests to run against RESP2 and RESP3 configurations.
libs/server/Resp/RespServerSessionOutput.cs Introduces a new verbatim-string writer that guarantees progress across send-buffer boundaries.
libs/server/Resp/ClientCommands.cs Switches CLIENT LIST/INFO output to use the new large verbatim writer.
libs/server/Metrics/Info/InfoCommand.cs Switches INFO output to use the new large verbatim writer and simplifies empty output path.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/Garnet.test/RespInfoTests.cs Outdated
Comment thread test/Garnet.test/RespInfoTests.cs
Comment thread test/Garnet.test/RespInfoTests.cs Outdated
Comment thread test/Garnet.test/RespInfoTests.cs
Comment thread libs/server/Resp/RespServerSessionOutput.cs
Comment thread libs/server/Resp/RespServerSessionOutput.cs Outdated
Comment thread libs/server/Resp/RespServerSessionOutput.cs Outdated
Comment thread libs/server/Resp/RespServerSessionOutput.cs Outdated
@kevin-montrose kevin-montrose merged commit 185a2c4 into main May 8, 2026
27 checks passed
@kevin-montrose kevin-montrose deleted the users/kmontrose/verbatimStringFix branch May 8, 2026 22:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants